Search

是的,2020年五月,也就是一年前的 #TDD與持續重構 梯次,今天還有同學會在上面問問題,而我也樂...

  • Share this:

是的,2020年五月,也就是一年前的 #TDD與持續重構 梯次,今天還有同學會在上面問問題,而我也樂於分享一下我的看法一起交流。

從他的發問例子,pull member up 加上 namespace 的 Money, 讓我想到他正在用 Ct 練習 Kent Beck 的 TDD by Examples part 1 的 Money Example.

所以順便分享了一下我覺得不要錯過的重點(美的地方)。

至於那個 builder 的視角,並不是書裡面寫的,而是我會想從 Expression 往下延伸嘗試的設計視角,這樣可以簡單的把一堆 計算 的內容跟組合封裝起來。

試過一次,覺得蠻有趣的,但畢竟不是真實產品等級,我的領域知識也還不足,不知道那樣的 builder 概念在該領域會不會碰到什麼不合適的使用場景就是了。

多嘗試,多從自己的輸出取得回饋,才能真的學到書本內想帶出來的知識點。


何況我還有 Kent Beck 可以請教 ❤️

補上在學員群組分享的片段:


好的抽象概念(隱喻)真的是可遇不可求,需要大量練習,如果大家有仔細看書的話,Kent Beck 也是在正式做這個例子十多遍以上,才領略到這個設計的角度。

這也是為什麼 一個足夠複雜 概念夠多的題目或需求,值得我們反覆練習

https://tdd.best/courses/classic-tdd-by-example-video-training/

我在這個影音課希望可以達到的效果也是如此,因為我自己一個語言做了十多遍(我目前有準備三個語言的版本 Java, C#, Python),很多遍的設計角度都不一樣。

有一些在前面幾次直覺不可行的,在後面幾次的岔路時,我就決定走走看。

大部分直覺都是對的,但也有幾次走出很不一樣的路。

如果「只練一次」,是沒機會走出那麼多不同的設計角度的。

同樣的,如果寫程式太慢,或是取得回饋的週期過長,你能嘗試的設計方案就會跟著變少,能學到的東西變少,同時要追求「剛好且簡單」的解決方案,機率就會變低。

大家可以想想,如果是自己在做 Money Example, 在真實世界有時間壓力底下,可能這輩子都不可能想出這樣簡單的設計方案。

如果都只在真實工作才學習、練習,那技能就會一直停滯。

永遠都只能用那種直白、procedure式、脆弱的流程設計角度,因為只會這種方式,自然自己最快的完成方式 就只會有這種副作用、複雜度最大的設計方式。

所以要多練 讓自己有多種視角,TDD 也是一種先從使用端來設計的視角,所以易用性的設計角度,物件的互動角度才能在這種視角被凸顯出來。


Tags:

About author
我是 Joey Chen,闖蕩江湖的稱號是 91,熱血點火師,專門燃起大家心裡面的熱情與初衷。 目前為 Odd-e Taiwan 的負責人,同時也是 JetBrains 在台灣的培訓夥伴,至今也仍是熱愛學習與享受各種程式語言之美的 programmer。 身為敏捷教練,擅長 Agile、Scrum、LeSS 等敏捷文化與協作框架的落實與導入,如何讓大家 being agile 而不是 doing agile。同時喜歡結合各家所長,例如 Lean, Kanban 等,重點是持續改善、解決問題、端出成果,而不執著於某種特定方法論或框架。 身為技術教練,我也是極限編程(extreme programming)的狂熱者,我擅長用這些技術與工程實踐來提昇產品的品質、團隊的生產力、降低營運風險,因應市場與公司的商業目標,讓團隊能具有高適應與反應能力的基礎建設。例如 實例化需求、ATDD、BDD、TDD、重構、自動化單元測試/整合測試/驗收測試、CI/CD、code review、pair programming、mob-programming 等等。 同時,我也是推崇 極速開發 的 developer,追求從想法到產品程式碼的完成,中間的時間差能趨近於零,也就是劍隨心轉,想到哪,程式碼就長到哪的境界。從想法到實現中間的等待,其實在實務上佔了很大的 context switch 成本,如果能讓這段時間縮到最短,就能比其他人多嘗試更多種解決方案,進而挑選出最剛好的方案。 同時也是技術社群的活躍份子,從 2010 年開始連任九屆的微軟 MVP,兼任 MSDN 論壇板主,也曾經獲得年度 MSDN 文件庫刊登數量世界第一的榮耀。對微軟技術有愛,對 C# 有愛,對自動測試有愛,對重構與設計模式有愛。近年來對 Java, PHP, Python 也充滿濃厚的興趣,曾帶領客戶團隊中不會寫程式的 QA ,一起用 Python 完成超過百個 mobile UI 自動化測試。 擁有超過十年擔任開發團隊 tech leader, trainer, coach 與 mentor 的經驗,進行的企業內部與公開技術培訓課程已超過 100 場,培訓過的開發人員超過 1000 位,擔任研討會與社群活動的講師次數超過 30 次。 同時也是技術書籍的作者與譯者,與朋友合著的書籍包含《ASP.NET MVC 5:網站開發美學》、《ASP.NET MVC 4 網站開發美學》,翻譯的書籍有《單元測試的藝術-第二版》、《敏捷開發實踐》、《進入IT產業必讀的200個 .NET面試決勝題》。 如果想跟我即時互動,歡迎直接私訊或 email 至 [email protected]
請參考:https://tdd.best/about/
View all posts